import axios from 'axios'
import store from '@/store'
import { Message } from 'element-ui'

const request = axios.create({
    baseURL:'/app-dev',
    timeout:20000
})

request.interceptors.request.use(config => {
    const token = store.getters.token
    if(token){
        config.headers['token'] = token
    }
    return config
},error=>{
    console.log(error);
    return Promise.reject(error)
})

request.interceptors.response.use(response => {
    const res = response.data
    if(res.code !== 20000 || res.code !== 200){
        Message({
            message:res.data || res.message || 'Error',
            type:'error',
            duration:5*1000
        })

        if (res.code === 50008 || res.code === 50012 || res.code === 50014) {
            // to re-login
            MessageBox.confirm('You have been logged out, you can cancel to stay on this page, or log in again', 'Confirm logout', {
              confirmButtonText: 'Re-Login',
              cancelButtonText: 'Cancel',
              type: 'warning'
            }).then(() => {
              store.dispatch('user/resetToken').then(() => {
                location.reload()
              })
            })
          }
          return Promise.reject(new Error(res.message || 'Error'))
        } else {
          return res
        }
    
},error => {
    console.log('err' + error) // for debug
    Message({
      message: error.message,
      type: 'error',
      duration: 5 * 1000
    })
    return Promise.reject(error)
  })


  export default request